#pragma once
#include <vulkan/vulkan.h>
#define GLFW_INCLUDE_VULKAN
#include <GLFW/glfw3.h>

class VulkanApplication
{
public:
    VulkanApplication(const char* appName);
    ~VulkanApplication();

    VkInstance getInstance() { return _instance; }
    VkPhysicalDevice getPhysicalDevice() { return _physicalDevice; }
    VkDevice getDevice() { return _logicDevice; }

    bool initialized() const { return _initialized; }

private:
    bool createInstance(const char* appName);
    bool obtainPhysicalDevice();
    bool createLogicDevice();

    VkInstance _instance;
    VkPhysicalDevice _physicalDevice;
    VkDevice _logicDevice;
    bool _initialized;
};
